#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;

//@file   : null
//@author : Chizuru
//@date   : 2024/4/1
//@brief  : null

#define ARR_SIZE(arr) (sizeof(arr) / sizeof(arr[0]))
//int removeDuplicates(int* nums, int numsSize) {
//    int i = 0;
//    int j = i + 1;
//
//    while (j < numsSize) {
//        int flag = 0;
//        if (nums[i] == nums[j]) {
//            flag = 1;
//        }
//
//        nums[++i] = nums[j++];
//
//        while (j < numsSize && nums[i] == nums[j] && flag) {
//            j++;
//        }
//
//    }
//    return i + 1;
//}



int removeDuplicates(int* nums, int numsSize) {
    int i = 2;
    
    int* a = (int*)malloc(sizeof(int) * numsSize);
    for (int a1 = 0; a1 < numsSize; a1++) {
        a[a1] = nums[a1];
    }
    for (int j = 2; j < numsSize; j++) {
        if (a[j] != a[j - 1] || (a[j] == a[j - 1] && a[j] != a[j - 2])) {
            nums[i++] = a[j];
        }
    }
    return i;
}



int main(void) {
    int nums[] = { 1,1,1,2,2,3 };
    int len = ARR_SIZE(nums);

    int ret = removeDuplicates(nums,len);


    return 0;

}
